Distribution of data and memory timing parameters across memory modules based on memory access patterns

ABSTRACT

A processor distributes memory timing parameters and data among different memory modules based upon memory access patterns. The memory access patterns indicate different types, or classes, of data for an executing workload, with each class associated with different memory access characteristics, such as different row buffer hit rate levels, different frequencies of access, different criticalities, and the like. The processor assigns each memory module to a data class and sets the memory timing parameters for each memory module according to the module&#39;s assigned data class, thereby tailoring the memory timing parameters for efficient access of the corresponding data.

BACKGROUND

For some processing systems, memory performance puts a constraint onoverall system performance. For example, a graphics processing unit(GPU) of a processing system can generate a high amount of memorytraffic, and the performance of the memory can limit the overall speedwith which the GPU executes its assigned operations. One approach toimprove memory performance is by adjusting the architecture of thememory and memory interface, such as by employing High Bandwidth Memory(HBM) interfaces and three-dimensional (3D) stacked memoryarchitectures. Another approach is to employ dynamic voltage andfrequency (DVFS) techniques to adjust the voltage and clock frequencysupplied to the memory based on the processing system's power andperformance constraints. However, existing DVFS techniques canundesirably limit system performance while allowing the system toconsume a relatively high amount of power.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure may be better understood, and its numerousfeatures and advantages made apparent to those skilled in the art byreferencing the accompanying drawings. The use of the same referencesymbols in different drawings indicates similar or identical items.

FIG. 1 is a block diagram of a processing system that sets memory timingparameters for different memory modules based on memory access patternsof a workload in accordance with some embodiments.

FIG. 2 is an example of the processing system of FIG. 1 setting memorytiming parameters differently for different memory modules based onmemory access patterns in accordance with some embodiments.

FIG. 3 is another example of the processing system of FIG. 1 settingmemory timing parameters differently for different memory modules basedon memory access patterns in accordance with some embodiments.

FIG. 4 is a block diagram illustrating the distribution of differentclasses of data to different memory modules of the processing system ofFIG. 1 based on different memory timing parameters in accordance withsome embodiments.

FIG. 5 is a flow diagram illustrating a method of distributing differentsets of data to different memory modules based on different memorytiming parameters in accordance with some embodiments.

DETAILED DESCRIPTION

FIGS. 1-5 illustrate techniques for a processor to distribute memorytiming parameters and data among different memory modules based uponmemory access patterns. The memory access patterns indicate differenttypes, or classes, of data for an executing workload, with each classassociated with different memory access characteristics, such asdifferent row buffer hit rate levels, different frequencies of access,different criticalities, and the like. The processor assigns each memorymodule to a data class and sets the memory timing parameters for eachmemory module according to the module's assigned data class, therebytailoring the memory timing parameters for efficient access of thecorresponding data, and thus improving overall processing systemperformance.

To illustrate, in some embodiments a processing system employs DRAMmodules that have adjustable timing parameters, such as memory clockfrequency, command delay parameters (e.g., Row Address Strobe (RAS) toColumn Address Strobe Delay (RCD) parameters), and the like.Conventionally, a processor of the processing system sets the timingparameters to comply with specifications set by, for example, a vendorof the DRAM modules. However, the vendor often sets the specificationsfor the timing parameters conservatively and based on a maximum expectedtemperature that may not hold for the actual operating conditions of theprocessor.

Furthermore, in many cases a given application or other workloadaccesses different data within the workload's address space according todifferent access patterns, so that different regions of memory withinthe address space have different memory access characteristics, such asspatial locality, frequency of access, criticality (i.e. the degree towhich a processor can perform other useful work while waiting for datafrom the memory region), and the like. The different memory accesspatterns have different performance sensitivities to the differentmemory timing parameters. For example, in some cases the performance ofa given memory access pattern is improved by increasing the memory clockfrequency, while the performance of a different memory access pattern isrelatively insensitive to the memory clock frequency, but instead isimproved by reducing the RCD (e.g. RCDRD and RCDWR) parameters. Usingthe techniques described herein, a processor identifies the memoryaccess behavior for each class of data associated with a workload,assigns each class to a set of memory modules, and sets the memorytiming parameters for each set of memory modules based on the assignedclass of data, thereby tailoring the timing characteristics of the DRAMmodules according to the expected pattern of memory accesses to thedata, and thus improving overall performance of the processing system.

To illustrate via an example, in some embodiments a memory controllerdetermines that an application accesses two different sets of datawithin the application's address space according to two different memoryaccess patterns. The two sets of data are designated for purposes of theexample as Data Set A and Data Set B, respectively. The memorycontroller determines that the memory access pattern for Data Set A,designated Pattern A, is characterized by a high row buffer hit rate, ahigh frequency of access, and a low criticality. The memory controllerfurther determines that the memory access pattern for Data Set B,designated Pattern B, is characterized by a low row buffer hit rate, alow frequency of access, and a high criticality.

After identifying Pattern A and Pattern B, the memory controllerdetermines (e.g., based on a specified lookup table or other datastructure) the memory timing parameters for each pattern, wherein thememory timing parameters are tailored to result in efficient memoryaccess for the corresponding memory access pattern. For this example,the memory controller determines that the memory timing parameters forPattern A correspond to a relatively high memory clock frequency, andthat the memory timing parameters for Pattern B correspond to a low pageactivation and memory precharge latency. Accordingly, the memorycontroller assigns the memory addresses for Data Set A to one set ofmemory modules, designated MM Set A, and assigns the memory addressesfor Data Set B to a different set of memory modules, designated MM SetB. The memory controller thereby ensures that Data Set A is stored at MMSet A and Data Set B is stored at MM Set B. The memory controller setsthe memory timing parameters for each MM Set to the memory timingparameters for the corresponding access Pattern. Thus, the memorycontroller sets the memory timing parameters for MM Set A to establish arelatively high memory clock frequency and sets the memory timingparameters for MM Set B to establish a low page activation and prechargelatency. The memory controller thereby sets the memory timing parametersfor each set of data based on the expected memory access patterns to thedata set.

FIG. 1 illustrates a processing system 100 that sets memory timingparameters for each of a plurality of memory modules based on memoryaccess patterns in accordance with some embodiments. The processingsystem 100 is generally configured to execute sets of instructions(e.g., applications) that, when executed, manipulate one or more aspectsof an electronic device in order to carry out tasks specified by thesets of instructions. Accordingly, in different embodiments theprocessing system 100 is part of one of a variety of electronic devices,such as a desktop computer, laptop computer, server, smartphone, tablet,game console, and the like.

To facilitate execution of the sets of instructions, the processingsystem 100 includes a processor 101 and a plurality of memory modules(e.g., memory modules 115, 116). It will be appreciated that, at leastin some embodiments, the processing system 100 includes additionalmodules and components not illustrated at FIG. 1, such as additionalprocessors, memory modules, data storage components (e.g., disk drives),input/output controllers and devices, and the like.

The processor 101 is generally configured to execute the applicationsand other sets of instructions on behalf of the processing system 100.The memory modules 115 are generally configured to store data that ismanipulated by the sets of instructions when executed by the processor101. For purposes of description, it is assumed that the memory modules115 and 116 are DRAM modules, such as dual in-line memory modules(DIMMs). In some embodiments, each of the memory modules 115 and 116 aredifferent memory modules of an HBM memory stack. For example, in someembodiments the memory modules 115 and 116 are formed in differentintegrated circuit dies, with the dies arranged in a 3D stack with anHBM controller die. An integrated circuit die and the 3D stack areplaced on top of a silicon interposer, wherein the interposer includeselectrical connectivity structures (e.g. vias and other interconnects)to provide connections between the processor 101 and the memory modules115 and 116, as described further herein.

In the course of executing the sets of instructions, the processor 101generates operations, referred to herein as memory accesses. Examples ofmemory accesses include read operations (also referred to as a memoryread) that retrieve data from a memory module and write operations (alsoreferred to as a memory write) that write data to the memory module. Tosupport memory accesses, the processor 101 is connected to each memorymodule via a set of busses. For example, the processor 101 is connectedto the memory module 115 via a clock bus 117, a command bus 118, and anaddress/data bus 119. These busses are collectively referred to as thememory busses 117-119. It will be appreciated that while theaddress/data bus 119 is illustrated as a single bus, in otherembodiments the processor 101 is connected to the memory module 115 viaseparate address and data busses. In addition, in some embodiments thememory busses 117-119 represent additional or different busses andconnections to those illustrated at FIG. 1, such as one or more bussesor connections to carry data strobe signals.

To execute a memory operation, the processor 101 provides specifiedmemory signaling on the memory busses 117-119, such as a clock signalvia the clock bus 117, one or more commands via the command bus 118, anda memory address and data via the address/data bus 119. In response, thememory module 115 executes the memory operation indicated by the memorysignaling. For some operations (e.g., memory reads), the memory module115 provides responsive information via the memory busses 117-119, suchas providing data via the address/data bus 119. The execution of thememory operations at the memory module 115 is governed by one or morememory timing parameters that govern how quickly the memory module 115carries out specified tasks that support the memory operations. Oneexample of a memory timing parameter is the frequency of the clocksignal provided by the processor 101 via the clock bus 117. As thefrequency of the clock signal increases, the memory module 115 executesat least some memory operations, such as read and write operations, morequickly.

Other memory timing parameters govern the speed with which the memorymodule 115 executes associated tasks that support memory operations. Forexample, in some embodiments the memory module 115 includes a storagearray that stores a relatively large amount of data that is accessedrelatively slowly and a row buffer that stores a relatively small amountof data that is accessed relatively quickly. To increase overall accessspeeds, in response to a memory access to a location of the storagearray, the memory module 115 loads a specified block of data, referredto as a memory page (e.g. memory page 111) into the row buffer andsatisfies memory accesses targeted to the memory page from the rowbuffer. This allows frequent accesses to the memory page over a shortamount of time to be executed relatively quickly. The speed with whichthe memory module 115 loads a page to the row buffer is governed by oneor more memory timing parameters, such as one or more page-loadingparameters. Other examples of memory timing parameters include a rowprecharge parameter, a column-to-column delay parameter, a row-to-rowdelay parameter, a four-bank activation window parameter, a writerecovery (WR) parameter indicating a time between writing andprecharging, a read to precharge (RTP) parameter indicating a timebetween a read and a precharge, a refresh interval (REFI) parameterbased on the frequency of memory access, and the like.

In some embodiments, one or more of the memory timing parameters thatgovern operations at the memory modules 115 and 116 are adjustable. Forexample, in some embodiments the clock frequency of the memory clocksignal provided via the clock bus 117 is adjustable by the processor101. Other memory timing parameters are adjusted by the processor 101sending a specified command to the memory module 115 via the command bus118. Still other memory timing parameters are adjusted by the processor101 changing the voltage of the memory signaling provided to the memorymodule 115. However, in some cases adjusting a memory timing parameterabove a specified level or outside of a specified range has associatedcosts, such as raising the temperature of one or more components of theprocessing system 100, wherein such costs impact overall systemperformance. Further, in at least some embodiments adjusting the memorytiming parameters outside of a specified range does not provideperformance benefits for a given workload executing at the processor101. Accordingly, in some embodiments the processor 101 is configured toadjust the memory timing parameters associated with the memory modules115 and 116 based on the expected memory access behavior of a workloadexecuting at the processor 101.

To illustrate, the processor 101 includes a processing unit 102 and amemory controller 110. The processing unit 102 includes one or moreprocessor cores, compute units, or other processing elements generallyconfigured to execute sets of instructions or commands based on the setsof the instructions. Thus, in some embodiments the processing unit 102is a central processing unit (CPU) that includes one or more processorcores configured to execute threads of instructions on behalf of theprocessor 101. In other embodiments, the processing unit 102 is agraphics processing unit (GPU) that includes one or more compute unitsconfigured to execute vector and graphics processing operations based oncommands received from a CPU. It will be appreciated that although FIG.1 illustrates a single processing unit 102 for convenience, in otherembodiments the processor 101 or the processing system 100 includesadditional processing units not illustrated at FIG. 1.

The processing unit 102 executes sets of operations collectivelyreferred to as workloads (e.g., workload 104). In different embodimentsthe workload 104 represents different granularities of operations. Forexample, in some embodiments the workload 104 represents all theoperations associated with a corresponding application. In otherembodiments, the application has multiple phases, with each phasecorresponding to a different pattern of memory access behavior, and theworkload 104 represents the operations corresponding with one of themultiple phases of the application.

The memory controller 110 is generally configured to manage theexecution of memory operations executed by the processing unit 102. Forexample, in some embodiments the memory controller 110 manages thelogical and physical (PHY) layer operations associated with the memoryaccesses. Thus, in some embodiments the memory controller 110 performstasks such as buffering of memory accesses, address translation formemory accesses, generating memory signaling based on memory accesses,providing the memory signaling via the memory busses 117-119, bufferingdata received in response to the memory accesses, and providing theresponsive data to the processing unit 102.

In addition, the memory controller 110 is configured to adjust thememory timing parameters of one or more of the memory modules 115 and116 based on the expected memory access patterns of the workload 104. Toillustrate, the memory controller 110 includes a timing parametercontrol module 106 that is configured to 1) determine the memory accesspatterns associated with different sets of data accessed by the workload104; 2) assign the different sets of data to different ones of thememory modules 115 and 116; and 3) set the timing parameters for each ofthe memory modules 115 and 117 according to their assigned data sets.

To illustrate, the timing parameter control module 106 is configured toaccess a set of memory access profiles 107 that indicate the expectedmemory access profiles for workloads to be executed by the processingunit 102. In some embodiments, a memory access profile for a workloadindicates different sets of data to be accessed by the workload, thevirtual memory addresses for the different sets of data, and memoryaccess characteristics associated with each data set. In differentembodiments, the memory access characteristics include one or more of amemory traffic rate associated with the corresponding data set, a numberof memory accesses (reads, writes, or both) associated with the dataset, memory access sizes for the data set, memory page hits, misses, orconflicts associated with the data set, a spatial locality of memoryaccesses associated with the data set, and the like, row-buffer hitrates, congestion metrics, processor stall cycles, a write-to-readratio, a memory channel contention indicator, or any combinationthereof.

In different embodiments, the memory access profile for the workload 104is generated in different ways. For example, in some embodiments thememory access profile for the workload 104 is generated by a programmeror developer of the corresponding application, such as by testing andcharacterizing the memory access patterns for the application in a testenvironment. The programmer or developer of the application indicatesthe memory access profile for the workload 104 via a set of compilerhooks and data flags that identify the different sets of data andcorresponding virtual memory addresses, and the memory accesscharacteristics for the identified data sets. In other embodiments, thememory access profile for the workload 104 is generated by an operatingsystem (OS) executing at the processor 101 using performance informationstored at a set of performance counters (not show). The OS periodicallyreads the performance counters to evaluate metrics such as therow-buffer hit rate, processor stall cycles due to pending memoryrequests, and congestion in the memory system. The OS uses thisinformation to classify the memory access behaviors for the differentdata sets, thereby generating the memory access profile for the workload104.

The timing parameter control module 106 assigns each data set identifiedby the memory access profile to at least one corresponding memorymodule. In some embodiments, the timing parameter control module 106assigns a data set by mapping the virtual addresses for the data set, asgenerated by the workload 104 or the OS, to physical addresses of theassigned memory module. The timing parameter control module 106 storesthe mapping at a memory map 111, and the memory controller 110 employsthe memory map 111 to perform address translation when executing memoryaccess operations, such as read and write operations.

The timing parameter control module 106 sets the memory timingparameters for each memory module based on a timing parameter table 109that specifies the memory timing parameters for different memory accesspatterns. For example, in some embodiments the timing parameter controltable indicates memory timing parameter values for each of a specifiedset of memory access patterns. The memory timing parameter values arespecified to support a particular memory access profile, including adesired power consumption level, memory performance level, and the like.In some embodiments, the timing parameter table 109 is specified by theworkload 104 or a corresponding application. In other embodiments, thetiming parameter table 109 is generated by the OS executing at theprocessor 101.

For each memory module, the timing parameter control module 106identifies the sets of data assigned to the memory module, identifiesthe memory access profile for each data set, as indicated by the memoryaccess profiles 107, and identifies the memory timing parameter valuesfor the indicated memory access profile, as indicated by a correspondingentry timing parameter table 109. The timing parameter control module106 sets the memory timing parameters the memory module to theidentified values by performing one or more of 1) setting the memoryclock frequency for the memory module to a specified value; 2) sendingone or more commands to the memory module to set corresponding memorytiming parameters; and 3) sending one or more commands to the memorymodule to change a power mode of the memory module (e.g., placing thememory module in a low-power mode).

In some embodiments, in addition to employing the memory access profiles107 to set the memory timing parameters, the timing parameter controlmodule 106 also employs a set of dynamic voltage and frequency scaling(DVFS) settings 108. For example, in some embodiments the OS sets theDVFS settings 108 based on characteristics of the workload 104 or othersystem settings to achieve a specified combination of performance andpower consumption. In some embodiments the timing parameter controlmodule 106 sets at least some of the memory timing parameters for amemory module based on the DVFS settings 108 while setting others of thememory timing parameters for the memory module based on the memoryaccess profiles 107. For example, in some embodiments the timingparameter control module sets the memory clock frequency and power modefor a memory module based on the DVFS settings 108, while setting thepage activation and precharge latency for the memory module based on thememory access profiles 107.

FIG. 2 illustrates an example of the processor 101 setting differentmemory timing parameters for different memory modules based on expectedmemory access patterns in accordance with some embodiments. FIG. 2illustrates an HBM memory stack 220 including memory modules 215, 216,217, and 218. In the depicted example, the memory controller 110 hasdetermined, based on the memory access profiles 107, that the workload104 is expected to access four different sets of data with differentmemory access patterns, and has assigned the different data sets todifferent ones of the memory modules 215-218. In particular, the memorycontroller 110 has assigned a data set associated with an access patternof a high row buffer hit rate, a high access frequency, and a lowcriticality to memory module 215. The memory controller 110 has furtherassigned a data set associated with an access pattern of a low rowbuffer hit rate, a low access frequency, and a high criticality tomemory module 216. In addition, the memory controller 110 has assigned adata set associated with an access pattern of a low row buffer hit rate,a low access frequency, and a low criticality to memory module 217. Thememory controller 110 has also assigned a data set associated with anaccess pattern of a low traffic rate and a low criticality to memorymodule 218.

Based on the expected access patterns to each memory module, and basedon the timing parameter table 109, the memory controller 110 sets thetiming parameters for each of the memory modules 215-218. Thus, in theexample of FIG. 2, the memory controller 110 sets the memory clockfrequency for the memory module 215 to a relatively high value. For thememory module 216, the memory controller 110 sets the page activationlatency and precharge latency parameters to relatively low values. Forthe memory module 217, the memory controller 110 sets the operatingvoltage, memory clock frequency, and access latency values to default ornominal values. For the memory module 218, the memory controller 110places the module in a low power mode. Thus, the memory controller 110tailors the memory timing parameters for each memory module to supportefficient execution of the corresponding memory access pattern, therebyimproving overall memory access efficiency and reducing overall systempower consumption.

In the example of FIG. 2, the memory timing parameters for each of thememory modules 215-218 are set to different values, as each memorymodule is associated with a different memory access pattern. In otherembodiments, two or more of the memory modules are associated with thesame or similar memory access patterns, and the memory timing parametersfor these memory modules are set similarly. An example is illustrated atFIG. 3 in accordance with some embodiments. FIG. 3 depicts an HBM memorystack 320 having four memory modules 315, 316, 317, and 318. Similar tothe example of FIG. 2, the memory controller sets the memory timingparameters for each of the memory modules 315-318 based upon theexpected memory access patterns associated with the data sets assignedto the different memory modules. However, in the example of FIG. 3, thememory modules 315 and 317 are each assigned data sets associated with amemory access pattern of a low row buffer hit rate, a low accessfrequency, and a low criticality. Accordingly, the memory controller 110sets the memory timing parameters for the memory modules 315 and 317similarly. In particular, the memory controller 110 sets the memoryvoltage, memory clock frequency, and latency parameters for each of thememory modules 315 and 317 to default or nominal values.

FIG. 4 illustrates an example of the memory controller 110 assigningdifferent data sets of the workload 104 to different memory modules inaccordance with some embodiments. FIG. 4 illustrates an HBM memory stack420 including four memory modules, designated memory modules 415, 416,417, and 418. FIG. 4 further illustrates a workload address space 430,which represents the memory address space for the data that the workload104 is expected to access.

In the depicted example, the memory controller 110 has identified, basedon the memory access profiles 107, that the workload address space 430includes four different data sets, designated data sets 431, 432, 433,and 434, with each of the data sets 431-434 corresponding to a differentmemory access pattern. Thus, the data set 431 corresponds to dataassociated with a memory access pattern having a low amount of memorytraffic and a low criticality. The data set 432 corresponds to dataassociated with a memory access pattern having a low row buffer hitrate, a low access frequency, and a low criticality. The data set 433corresponds to data associated with a memory access pattern having ahigh row buffer hit rate, a high access frequency, and a lowcriticality. The data set 434 corresponds to data associated with amemory access pattern having a low row buffer hit rate, a low accessfrequency, and a high criticality.

In the example of FIG. 4, the memory controller 110 assigns each of thedata sets 431-434 to different ones of the memory modules 415-418, andsets the memory timing parameters for each of the memory modules 415-418according to the memory access pattern of the assigned data set. Thus,the memory controller 110 sets the memory clock frequency for the memorymodule 415 to a relatively high value to support efficient accesses tothe data set 433. In addition, the memory controller 110 sets theactivation and precharge latency values for the memory module 416 torelatively low values, thereby supporting efficient memory accesses tothe data set 434. The memory controller 110 sets the memory voltage,memory clock frequency, and latency values for the memory module 417 todefault or nominal values, thereby supporting efficient access to thedata set 431. Furthermore, the memory controller 110 sets the memorymodule 418 to a low power mode, thereby supporting efficient accesses tothe data set 431.

FIG. 5 illustrates a flow diagram of a method 500 of distributingdifferent sets of data to different memory modules based on differentmemory timing parameters in accordance with some embodiments. Forpurposes of description, the method 500 is described with respect to anexample implementation at the processing system 100 of FIG. 1. At block502, the timing parameter control module 106 identifies which of thememory access profiles 107 corresponds to the workload 104 executing atthe processor 101. In some embodiments, the timing parameter controlmodule identifies the memory access profile by using a programidentifier associated with the workload 104 to index a table that storesthe memory access profiles 107.

At block 504, the timing parameter control module 106 uses the memoryaccess profile identified at block 502 to identify the data setsassociated with the workload 104. In addition, the timing parametercontrol module determines the memory access pattern associated with eachof the identified data sets. At block 506, the timing parameter controlmodule 106 uses the timing parameter table 109 to identify the timingparameters for the data sets based on the corresponding memory accesspatterns. At block 508, the memory controller 110 assigns each data setto a memory module and sets the memory timing parameters for each memorymodule to the corresponding timing parameters identified at block 506.At block 510, the workload 104 accesses data at the memory modules bysending memory access operations (e.g., read and write operations) tothe memory controller 110. The memory controller 110 executes the readand write operations to access the data at the memory modules, using thememory timing parameters for each memory module set at block 508.

In some embodiments, certain aspects of the techniques described abovemay implemented by one or more processors of a processing systemexecuting software. The software includes one or more sets of executableinstructions stored or otherwise tangibly embodied on a non-transitorycomputer readable storage medium. The software can include theinstructions and certain data that, when executed by the one or moreprocessors, manipulate the one or more processors to perform one or moreaspects of the techniques described above. The non-transitory computerreadable storage medium can include, for example, a magnetic or opticaldisk storage device, solid state storage devices such as Flash memory, acache, random access memory (RAM) or other non-volatile memory device ordevices, and the like. The executable instructions stored on thenon-transitory computer readable storage medium may be in source code,assembly language code, object code, or other instruction format that isinterpreted or otherwise executable by one or more processors.

Note that not all of the activities or elements described above in thegeneral description are required, that a portion of a specific activityor device may not be required, and that one or more further activitiesmay be performed, or elements included, in addition to those described.Still further, the order in which activities are listed are notnecessarily the order in which they are performed. Also, the conceptshave been described with reference to specific embodiments. However, oneof ordinary skill in the art appreciates that various modifications andchanges can be made without departing from the scope of the presentdisclosure as set forth in the claims below. Accordingly, thespecification and figures are to be regarded in an illustrative ratherthan a restrictive sense, and all such modifications are intended to beincluded within the scope of the present disclosure.

Benefits, other advantages, and solutions to problems have beendescribed above with regard to specific embodiments. However, thebenefits, advantages, solutions to problems, and any feature(s) that maycause any benefit, advantage, or solution to occur or become morepronounced are not to be construed as a critical, required, or essentialfeature of any or all the claims. Moreover, the particular embodimentsdisclosed above are illustrative only, as the disclosed subject mattermay be modified and practiced in different but equivalent mannersapparent to those skilled in the art having the benefit of the teachingsherein. No limitations are intended to the details of construction ordesign herein shown, other than as described in the claims below. It istherefore evident that the particular embodiments disclosed above may bealtered or modified and all such variations are considered within thescope of the disclosed subject matter. Accordingly, the protectionsought herein is as set forth in the claims below.

1. A method comprising: identifying, for each of a plurality of memory modules, a corresponding memory access profile based on a type of data stored at each of the plurality of memory modules; and setting a memory timing parameter for each of the plurality of memory modules based on the corresponding memory access profiles.
 2. The method of claim 1, wherein setting the memory timing parameters comprises: setting the memory timing parameter for a first memory module to a first value; and setting the memory timing parameter for a second memory module to a second value, the second value different from the first value.
 3. The method of claim 1, wherein the memory timing parameter includes at least one of a page loading parameter, a row precharge parameter, a column-to-column delay parameter, a row-to-row delay parameter, a four-bank activation window parameter, a write recovery (WR) parameter indicating a time between writing and precharging, a read to precharge (RTP) parameter indicating a time between a read and a precharge, and a refresh interval (REFI) parameter.
 4. The method of claim 1, wherein identifying the memory access profiles comprises identifying at least one of a row buffer hit rate, a number of processor stall cycles due to pending memory accesses, and a memory congestion metric.
 5. (canceled)
 6. The method of claim 1, wherein identifying the type of data comprises identifying a corresponding criticality metric for data stored at each of the plurality of memory modules.
 7. The method of claim 1, further comprising: transferring data from a first of the plurality of memory modules to a second of the plurality of memory modules based on the setting of the memory timing parameter for each of the plurality of memory modules.
 8. The method of claim 1, further comprising: adjusting a power setting of at least one of the plurality of memory modules based on the memory access profiles.
 9. The method of claim 1, wherein each of the plurality of memory modules comprises a different memory module in a high-bandwidth memory (HBM) stack. 10-12. (canceled)
 13. A processor comprising: a memory controller configured to identify, for each of a plurality of memory modules, a corresponding memory access profile based on a type of data stored at each of the plurality of memory modules; and wherein the memory controller is configured to set a memory timing parameter for each of the plurality of memory modules based on the corresponding memory access profiles.
 14. The processor of claim 13, wherein the memory controller is configured to set the memory timing parameters by: setting the memory timing parameter for a first memory module to a first value; and setting the memory timing parameter for a second memory module to a second value, the second value different from the first value.
 15. The processor of claim 13, wherein the memory timing parameter includes at least one of a page loading parameter, a row precharge parameter, a column-to-column delay parameter, a row-to-row delay parameter, a four-bank activation window parameter, a write recovery (WR) parameter indicating a time between writing and precharging, a read to precharge (RTP) parameter indicating a time between a read and a precharge, and a refresh interval (REFI) parameter.
 16. The processor of claim 13, wherein the memory controller is configured to identify the corresponding memory access profiles by identifying at least one of a row buffer hit rate, a number of processor stall cycles due to pending memory accesses, and a memory congestion metric.
 17. (canceled)
 18. The processor of claim 13, wherein the memory controller is configured to identify the memory access profiles by identifying a corresponding criticality metric for data stored at each of the plurality of memory modules.
 19. The processor of claim 13, wherein the memory controller is further configured to: transfer data from a first of the plurality of memory modules to a second of the plurality of memory modules based on the setting of the memory timing parameter for each of the plurality of memory modules.
 20. The processor of claim 1, wherein the memory controller is further configured to: adjust a power setting of at least one of the plurality of memory modules based on the memory access profiles.
 21. A method comprising: identifying, for each of a plurality of memory modules, a corresponding memory access profile based on a workload to be executed at a processor; and setting a memory timing parameter for each of the plurality of memory modules based on the corresponding memory access profiles.
 22. The method of claim 21, wherein identifying the memory access profiles comprises identifying at least one of a row buffer hit rate, a number of processor stall cycles due to pending memory accesses, and a memory congestion metric.
 23. The method of claim 21, further comprising transferring data from a first of the plurality of memory modules to a second of the plurality of memory modules based on the class of data for each of the plurality of memory modules.
 24. The method of claim 21, further comprising adjusting a power setting of at least one of the plurality of memory modules based on the memory access profiles.
 25. The method of claim 21, wherein the expected memory access behavior is determined according to an expected pattern of memory access to data for the workload. 